package com.rising.face.proxy.jdk;

import java.lang.reflect.Proxy;

public class SellMain {

    public static void main(String[] args) {
        //这是将代理类生成到本地，可以通过看代理类源码的方式，更加了解代理类是如何执行的。
        System.getProperties().put("sun.misc.ProxyGenerator.saveGeneratedFiles", "true");
        //普通的代理类，是有实现类的
        Sell sellApple = (Sell) Proxy.newProxyInstance(SellApple.class.getClassLoader(), SellApple.class.getInterfaces(), new MyInvocationHandler(new SellApple()));
        Sell sellJuzhi = (Sell) Proxy.newProxyInstance(SellJuzhi.class.getClassLoader(), SellJuzhi.class.getInterfaces(), new MyInvocationHandler(new SellJuzhi()));
        sellApple.sellSomeThing("红富士");
        System.out.println("--------------------------------------------");
        sellJuzhi.sellSomeThing("贡菊");
        System.out.println("---------------------面向接口编程-----------------------");
        //将sell的sellOnline转换为OnLineShopping的sellOnline
        Sell sell = (Sell) Proxy.newProxyInstance(OnLineShopping.class.getClassLoader(), new Class[] { Sell.class }, new MybatisInvocationHandler(new OnLineShopping()));
        sell.sellOnline();
    }

}
